/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var http = require('http');
var path = require('path');
var ejs = require('ejs');
/*var log4js = require('log4js');
//日志
log4js.configure({
  appenders: [
    { type: 'console' }, //控制台输出
    {
      type: 'file', //文件输出
      filename: 'logs/access.log', 
      maxLogSize: 1024000,
      backups:10,
      category: 'normal' 
    }
  ]
});
var logger = log4js.getLogger('normal');
logger.setLevel('DEBUG');*/

var settings = require('./config');

var app = express();

// all environments
app.set('port', 8089);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs'); //设置视图模版引擎为 html
//app.use(flash()); //使用connect-flash
//app.use(express.favicon()); //自己的图标则改为：app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
app.use(express.favicon(__dirname + '/public/images/favicon.ico'));
app.use(express.logger('dev')); //在开发环境下使用，在终端显示简单的日志
//app.use(express.bodyParser()); //connect 内建的中间件，用来解析请求体 。删除了原生的json()，因为bodyParser()已包含

//app.use(express.bodyParser({uploadDir: __dirname + "/public/images/userupload/",keepExtensions: true,limit: 10000000}));
app.use(express.bodyParser({uploadDir: __dirname + "/public/userUpload/",keepExtensions: true,limit: 10000000}));
app.use(express.methodOverride()); //connect 内建的中间件，可以协助处理 POST 请求，伪装 PUT、DELETE 和其他 HTTP 方法。

app.use(express.query()); //wechat模块需要

/*
 * 加入会话机制
 */
app.use(express.cookieParser()); //cookie解析中间件
app.use(express.session({
	secret: settings.cookieSecret, //加密，防止串改
	key: settings.db, //读取setting.js里面的db作为cookie名字
	cookie: {
		maxAge: 1000 * 60 * 29
	}, //设置29分钟过期
	/*	store: new MongoStore({
		db: settings.db
	})*/
}));

/*app.use(log4js.connectLogger(logger, {level:log4js.levels.DEBUG})); //使用日志*/

app.use(app.router); //调用路由解析的规则
app.set('env', 'production');
//app.use(express.static(path.join(__dirname, 'public'))); //connect 内建的中间件，设置根目录下的 public 文件夹为存放 image、css、js 等静态文件的目录。
/*//设置环境变量
app.configure('production', function () {
  var expireTime = 2592000000;
  app.use(express.static(__dirname + '/public', { maxAge: expireTime }));
  app.use(express.errorHandler());
})*/


// development only 开发环境下的错误处理，输出错误信息。
if ('development' == app.get('env')) {
	app.use(express.errorHandler());
	app.use(express.static(path.join(__dirname, 'public')));
	console.log('系统运行在开发模式下')
}

if ('production' == app.get('env')) {
	app.use(express.static(path.join(__dirname, 'public'), {
		maxAge: 1000 * 60 * 60 * 24 * 30
	}));
	//app.use(express.errorHandler());
	console.log('系统运行在生产模式下')
}

http.createServer(app).listen(app.get('port'), function() {
	console.log('kuanzhaiAdmin server listening on port ' + app.get('port'));
});

routes(app); //删除原来的路由设置，在此设置总路由